ZGlmZiAtLWdpdCBhL2NwdS9hcm05MjV0L3N0YXJ0LlMgYi9jcHUvYXJtOTI1dC9zdGFydC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMTVmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvYXJtOTI1dC9zdGFydC5TCkBAIC0wLDAgKzEsNDI0IEBACisvKgorICogIGFybWJvb3QgLSBTdGFydHVwIENvZGUgZm9yIEFSTTkyNSBDUFUtY29yZQorICoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDMgIFRleGFzIEluc3RydW1lbnRzCisgKgorICogIC0tLS0tIEFkYXB0ZWQgZm9yIE9NQVAxNTEwIGZyb20gQVJNOTIwIGNvZGUgLS0tLS0tCisgKgorICogIENvcHlyaWdodCAoYykgMjAwMQlNYXJpdXMgR3L2Z2VyIDxtYWdAc3lzZ28uZGU+CisgKiAgQ29weXJpZ2h0IChjKSAyMDAyCUFsZXggWvxwa2UgPGF6dUBzeXNnby5kZT4KKyAqICBDb3B5cmlnaHQgKGMpIDIwMDIJR2FyeSBKZW5uZWpvaG4gPGdqQGRlbnguZGU+CisgKiAgQ29weXJpZ2h0IChjKSAyMDAzCVJpY2hhcmQgV29vZHJ1ZmYgPHItd29vZHJ1ZmYyQHRpLmNvbT4KKyAqICBDb3B5cmlnaHQgKGMpIDIwMDMJS3NoaXRpaiAJIDxrc2hpdGlqQHRpLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisKKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKworI2lmIGRlZmluZWQoQ09ORklHX09NQVAxNTEwKQorI2luY2x1ZGUgPC4vY29uZmlncy9vbWFwMTUxMC5oPgorI2VuZGlmCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEp1bXAgdmVjdG9yIHRhYmxlIGFzIGluIHRhYmxlIDMuMSBpbiBbMV0KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKworLmdsb2JsIF9zdGFydAorX3N0YXJ0OgliICAgICAgIHJlc2V0CisJbGRyCXBjLCBfdW5kZWZpbmVkX2luc3RydWN0aW9uCisJbGRyCXBjLCBfc29mdHdhcmVfaW50ZXJydXB0CisJbGRyCXBjLCBfcHJlZmV0Y2hfYWJvcnQKKwlsZHIJcGMsIF9kYXRhX2Fib3J0CisJbGRyCXBjLCBfbm90X3VzZWQKKwlsZHIJcGMsIF9pcnEKKwlsZHIJcGMsIF9maXEKKworX3VuZGVmaW5lZF9pbnN0cnVjdGlvbjoJLndvcmQgdW5kZWZpbmVkX2luc3RydWN0aW9uCitfc29mdHdhcmVfaW50ZXJydXB0Ogkud29yZCBzb2Z0d2FyZV9pbnRlcnJ1cHQKK19wcmVmZXRjaF9hYm9ydDoJLndvcmQgcHJlZmV0Y2hfYWJvcnQKK19kYXRhX2Fib3J0OgkJLndvcmQgZGF0YV9hYm9ydAorX25vdF91c2VkOgkJLndvcmQgbm90X3VzZWQKK19pcnE6CQkJLndvcmQgaXJxCitfZmlxOgkJCS53b3JkIGZpcQorCisJLmJhbGlnbmwgMTYsMHhkZWFkYmVlZgorCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFN0YXJ0dXAgQ29kZSAocmVzZXQgdmVjdG9yKQorICoKKyAqIGRvIGltcG9ydGFudCBpbml0IG9ubHkgaWYgd2UgZG9uJ3Qgc3RhcnQgZnJvbSBtZW1vcnkhCisgKiBzZXR1cCBNZW1vcnkgYW5kIGJvYXJkIHNwZWNpZmljIGJpdHMgcHJpb3IgdG8gcmVsb2NhdGlvbi4KKyAqIHJlbG9jYXRlIGFybWJvb3QgdG8gcmFtCisgKiBzZXR1cCBzdGFjaworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoKKyAqIENGR19NRU1fRU5EIGlzIGluIHRoZSBib2FyZCBkZXBlbmRlbnQgY29uZmlnLWZpbGUgKGNvbmZpZ3MvY29uZmlnX0JPQVJELmgpCisgKi8KK19URVhUX0JBU0U6CisJLndvcmQJVEVYVF9CQVNFCisKKy5nbG9ibCBfYXJtYm9vdF9zdGFydAorX2FybWJvb3Rfc3RhcnQ6CisJLndvcmQgX3N0YXJ0CisKKy8qCisgKiBOb3RlOiBfYXJtYm9vdF9lbmRfZGF0YSBhbmQgX2FybWJvb3RfZW5kIGFyZSBkZWZpbmVkCisgKiBieSB0aGUgKGJvYXJkLWRlcGVuZGVudCkgbGlua2VyIHNjcmlwdC4KKyAqIF9hcm1ib290X2VuZF9kYXRhIGlzIHRoZSBmaXJzdCB1c2FibGUgRkxBU0ggYWRkcmVzcyBhZnRlciBhcm1ib290CisgKi8KKy5nbG9ibCBfYXJtYm9vdF9lbmRfZGF0YQorX2FybWJvb3RfZW5kX2RhdGE6CisJLndvcmQgYXJtYm9vdF9lbmRfZGF0YQorLmdsb2JsIF9hcm1ib290X2VuZAorX2FybWJvb3RfZW5kOgorCS53b3JkIGFybWJvb3RfZW5kCisKKy8qCisgKiBfYXJtYm9vdF9yZWFsX2VuZCBpcyB0aGUgZmlyc3QgdXNhYmxlIFJBTSBhZGRyZXNzIGJlaGluZCBhcm1ib290CisgKiBhbmQgdGhlIHZhcmlvdXMgc3RhY2tzCisgKi8KKy5nbG9ibCBfYXJtYm9vdF9yZWFsX2VuZAorX2FybWJvb3RfcmVhbF9lbmQ6CisJLndvcmQgMHgwYmFkYzBkZQorCisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKy8qIElSUSBzdGFjayBtZW1vcnkgKGNhbGN1bGF0ZWQgYXQgcnVuLXRpbWUpICovCisuZ2xvYmwgSVJRX1NUQUNLX1NUQVJUCitJUlFfU1RBQ0tfU1RBUlQ6CisJLndvcmQJMHgwYmFkYzBkZQorCisvKiBJUlEgc3RhY2sgbWVtb3J5IChjYWxjdWxhdGVkIGF0IHJ1bi10aW1lKSAqLworLmdsb2JsIEZJUV9TVEFDS19TVEFSVAorRklRX1NUQUNLX1NUQVJUOgorCS53b3JkIDB4MGJhZGMwZGUKKyNlbmRpZgorCisKKy8qCisgKiB0aGUgYWN0dWFsIHJlc2V0IGNvZGUKKyAqLworCityZXNldDoKKwkvKgorCSAqIHNldCB0aGUgY3B1IHRvIFNWQzMyIG1vZGUKKwkgKi8KKwltcnMJcjAsY3BzcgorCWJpYwlyMCxyMCwjMHgxZgorCW9ycglyMCxyMCwjMHhkMworCW1zcgljcHNyLHIwCisJCisJLyoKKwkgKiBTZXQgdXAgOTI1VCBtb2RlCisJICovCisJbW92IHIxLCAjMHg4MSAgICAgICAgICAgICAgIC8qIFNldCBBUk05MjVUIGNvbmZpZ3VyYXRpb24uICovCisJbWNyIHAxNSwgMCwgcjEsIGMxNSwgYzEsIDAgIC8qIFdyaXRlIEFSTTkyNVQgY29uZmlndXJhdGlvbiByZWdpc3Rlci4gKi8KKworCS8qIAorCSAqIHR1cm4gb2ZmIHRoZSB3YXRjaGRvZywgdW5sb2NrL2RpYWJsZSBzZXF1ZW5jZQorCSAqLworCW1vdiAgcjEsICMweEY1CisJbGRyICByMCwgPVdEVElNX01PREUKKwlzdHJoIHIxLCBbcjBdCisJbW92ICByMSwgIzB4QTAKKwlzdHJoIHIxLCBbcjBdCisKKwkvKgorCSAqIG1hc2sgYWxsIElSUXMgYnkgc2V0dGluZyBhbGwgYml0cyBpbiB0aGUgSU5UTVIgLSBkZWZhdWx0CisJICovCisJbW92IHIxLCAjMHhmZmZmZmZmZgorCWxkciByMCwgPVJFR19JSEwxX01JUgorCXN0ciByMSwgW3IwXQorCWxkciByMCwgPVJFR19JSEwyX01JUgorCXN0ciByMSwgW3IwXQorCisJLyogCisJICogd2FpdCBmb3IgZHBsbCB0byBsb2NrCisJICovICAgICAgIAorCWxkciAgcjAsID1DS19EUExMMQorCW1vdiAgcjEsICMweDEwCisJc3RyaCByMSwgW3IwXQorcG9sbDE6CisJbGRyaCByMSwgW3IwXQorCWFuZHMgcjEsIHIxLCAjMHgwMQorCWJlcSBwb2xsMQorCWJsICBjcHVfaW5pdF9jcml0CisKK3JlbG9jYXRlOgorCS8qCisJICogcmVsb2NhdGUgYXJtYm9vdCB0byBSQU0KKwkgKi8KKwlhZHIJcjAsIF9zdGFydAkJLyogcjAgPC0gY3VycmVudCBwb3NpdGlvbiBvZiBjb2RlICovCisJbGRyCXIyLCBfYXJtYm9vdF9zdGFydAorCWxkcglyMywgX2FybWJvb3RfZW5kCisJc3ViCXIyLCByMywgcjIJCS8qIHIyIDwtIHNpemUgb2YgYXJtYm9vdCAqLworCWxkcglyMSwgX1RFWFRfQkFTRQkJLyogcjEgPC0gZGVzdGluYXRpb24gYWRkcmVzcyAqLworCWFkZAlyMiwgcjAsIHIyCQkvKiByMiA8LSBzb3VyY2UgZW5kIGFkZHJlc3MgKi8KKworCS8qCisJICogcjAgPSBzb3VyY2UgYWRkcmVzcworCSAqIHIxID0gdGFyZ2V0IGFkZHJlc3MKKwkgKiByMiA9IHNvdXJjZSBlbmQgYWRkcmVzcworCSAqLworY29weV9sb29wOgorCWxkbWlhCXIwISwge3IzLXIxMH0KKwlzdG1pYQlyMSEsIHtyMy1yMTB9CisJY21wCXIwLCByMgorCWJsZQljb3B5X2xvb3AKKworCS8qIHNldCB1cCB0aGUgc3RhY2sgKi8KKwlsZHIJcjAsIF9hcm1ib290X2VuZAorCWFkZAlyMCwgcjAsICNDT05GSUdfU1RBQ0tTSVpFCisJc3ViCXNwLCByMCwgIzEyCQkvKiBsZWF2ZSAzIHdvcmRzIGZvciBhYm9ydC1zdGFjayAqLworCisJbGRyCXBjLCBfc3RhcnRfYXJtYm9vdAorCitfc3RhcnRfYXJtYm9vdDoJLndvcmQgc3RhcnRfYXJtYm9vdAorCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENQVV9pbml0X2NyaXRpY2FsIHJlZ2lzdGVycworICoKKyAqIHNldHVwIGltcG9ydGFudCByZWdpc3RlcnMKKyAqIHNldHVwIG1lbW9yeSB0aW1pbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKworY3B1X2luaXRfY3JpdDoKKwkvKgorCSAqIGZsdXNoIHY0IEkvRCBjYWNoZXMKKwkgKi8KKwltb3YJcjAsICMwCisJbWNyCXAxNSwgMCwgcjAsIGM3LCBjNywgMAkvKiBmbHVzaCB2My92NCBjYWNoZSAqLworCW1jcglwMTUsIDAsIHIwLCBjOCwgYzcsIDAJLyogZmx1c2ggdjQgVExCICovCisKKwkvKgorCSAqIGRpc2FibGUgTU1VIHN0dWZmIGFuZCBjYWNoZXMKKwkgKi8KKwltcmMJcDE1LCAwLCByMCwgYzEsIGMwLCAwCisJYmljCXIwLCByMCwgIzB4MDAwMDIzMDAJQCBjbGVhciBiaXRzIDEzLCA5OjggKC0tVi0gLS1SUykKKwliaWMJcjAsIHIwLCAjMHgwMDAwMDA4NwlAIGNsZWFyIGJpdHMgNywgMjowIChCLS0tIC1DQU0pCisJb3JyCXIwLCByMCwgIzB4MDAwMDAwMDIJQCBzZXQgYml0IDIgKEEpIEFsaWduCisJb3JyCXIwLCByMCwgIzB4MDAwMDEwMDAJQCBzZXQgYml0IDEyIChJKSBJLUNhY2hlCisJbWNyCXAxNSwgMCwgcjAsIGMxLCBjMCwgMAorCisJLyoKKwkgKiBHbyBzZXR1cCBNZW1vcnkgYW5kIGJvYXJkIHNwZWNpZmljIGJpdHMgcHJpb3IgdG8gcmVsb2NhdGlvbi4KKwkgKi8KKwltb3YJaXAsIGxyICAgICAgICAgIC8qIHBlcnNlcnZlIGxpbmsgcmVnIGFjcm9zcyBjYWxsICovCisJYmwJcGxhdGZvcm1zZXR1cCAgIC8qIGdvIHNldHVwIHBsbCxtdXgsbWVtb3J5ICovCisJbW92CWxyLCBpcCAgICAgICAgICAvKiByZXN0b3JlIGxpbmsgKi8KKwltb3YJcGMsIGxyICAgICAgICAgIC8qIGJhY2sgdG8gbXkgY2FsbGVyICovCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBJbnRlcnJ1cHQgaGFuZGxpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK0AKK0AgSVJRIHN0YWNrIGZyYW1lLgorQAorI2RlZmluZSBTX0ZSQU1FX1NJWkUJNzIKKworI2RlZmluZSBTX09MRF9SMAk2OAorI2RlZmluZSBTX1BTUgkJNjQKKyNkZWZpbmUgU19QQwkJNjAKKyNkZWZpbmUgU19MUgkJNTYKKyNkZWZpbmUgU19TUAkJNTIKKworI2RlZmluZSBTX0lQCQk0OAorI2RlZmluZSBTX0ZQCQk0NAorI2RlZmluZSBTX1IxMAkJNDAKKyNkZWZpbmUgU19SOQkJMzYKKyNkZWZpbmUgU19SOAkJMzIKKyNkZWZpbmUgU19SNwkJMjgKKyNkZWZpbmUgU19SNgkJMjQKKyNkZWZpbmUgU19SNQkJMjAKKyNkZWZpbmUgU19SNAkJMTYKKyNkZWZpbmUgU19SMwkJMTIKKyNkZWZpbmUgU19SMgkJOAorI2RlZmluZSBTX1IxCQk0CisjZGVmaW5lIFNfUjAJCTAKKworI2RlZmluZSBNT0RFX1NWQyAweDEzCisjZGVmaW5lIElfQklUCSAweDgwCisKKy8qCisgKiB1c2UgYmFkX3NhdmVfdXNlcl9yZWdzIGZvciBhYm9ydC9wcmVmZXRjaC91bmRlZi9zd2kgLi4uCisgKiB1c2UgaXJxX3NhdmVfdXNlcl9yZWdzIC8gaXJxX3Jlc3RvcmVfdXNlcl9yZWdzIGZvciBJUlEvRklRIGhhbmRsaW5nCisgKi8KKworCS5tYWNybwliYWRfc2F2ZV91c2VyX3JlZ3MKKwlzdWIJc3AsIHNwLCAjU19GUkFNRV9TSVpFICAgICAgICAgICBAIGNhcnZlIG91dCBhIGZyYW1lIG9uIGN1cnJlbnQgdXNlciBzdGFjaworCXN0bWlhCXNwLCB7cjAgLSByMTJ9CQkJQCBTYXZlIHVzZXIgcmVnaXN0ZXJzIChub3cgaW4gc3ZjIG1vZGUpIHIwLXIxMgorCisJbGRyCXIyLCBfYXJtYm9vdF9lbmQgICAgICAgICAgICAgICAgQCBmaW5kIHRvcCBvZiBzdGFjaworCWFkZAlyMiwgcjIsICNDT05GSUdfU1RBQ0tTSVpFICAgICAgIEAgZmluZCBiYXNlIG9mIG5vcm1hbCBzdGFjaworCXN1YglyMiwgcjIsICM4ICAgICAgICAgICAgICAgICAgICAgIEAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCisJbGRtaWEJcjIsIHtyMiAtIHIzfSAgICAgICAgICAgICAgICAgICBAIGdldCB2YWx1ZXMgZm9yICJhYm9ydGVkIiBwYyBhbmQgY3BzciAoaW50byBwYXJtIHJlZ3MpCisJYWRkCXIwLCBzcCwgI1NfRlJBTUVfU0laRQkJQCBncmFiIHBvaW50ZXIgdG8gb2xkIHN0YWNrCisKKwlhZGQJcjUsIHNwLCAjU19TUAorCW1vdglyMSwgbHIKKwlzdG1pYQlyNSwge3IwIC0gcjN9ICAgICAgICAgICAgICAgICAgIEAgc2F2ZSBzcF9TVkMsIGxyX1NWQywgcGMsIGNwc3IKKwltb3YJcjAsIHNwICAgICAgICAgICAgICAgICAgICAgICAgICBAIHNhdmUgY3VycmVudCBzdGFjayBpbnRvIHIwIChwYXJhbSByZWdpc3RlcikKKwkuZW5kbQorCisJLm1hY3JvCWlycV9zYXZlX3VzZXJfcmVncworCXN1YglzcCwgc3AsICNTX0ZSQU1FX1NJWkUKKwlzdG1pYQlzcCwge3IwIC0gcjEyfQkJCUAgQ2FsbGluZyByMC1yMTIKKwlhZGQgICAgIHI4LCBzcCwgI1NfUEMgICAgICAgICAgICAgICAgICAgQCAhISEhIFI4IE5FRURTIHRvIGJlIHNhdmVkICEhISEgYSByZXNlcnZlZCBzdGFjayBzcG90IHdvdWxkIGJlIGdvb2QuCisJc3RtZGIgICByOCwge3NwLCBscn1eICAgICAgICAgICAgICAgICAgIEAgQ2FsbGluZyBTUCwgTFIKKwlzdHIgICAgIGxyLCBbcjgsICMwXSAgICAgICAgICAgICAgICAgICAgQCBTYXZlIGNhbGxpbmcgUEMKKwltcnMgICAgIHI2LCBzcHNyCisJc3RyICAgICByNiwgW3I4LCAjNF0gICAgICAgICAgICAgICAgICAgIEAgU2F2ZSBDUFNSCisJc3RyICAgICByMCwgW3I4LCAjOF0gICAgICAgICAgICAgICAgICAgIEAgU2F2ZSBPTERfUjAKKwltb3YJcjAsIHNwCisJLmVuZG0KKworCS5tYWNybwlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKKwlsZG1pYQlzcCwge3IwIC0gbHJ9XgkJCUAgQ2FsbGluZyByMCAtIGxyCisJbW92CXIwLCByMAorCWxkcglsciwgW3NwLCAjU19QQ10JCQlAIEdldCBQQworCWFkZAlzcCwgc3AsICNTX0ZSQU1FX1NJWkUKKwlzdWJzCXBjLCBsciwgIzQJCQlAIHJldHVybiAmIG1vdmUgc3Bzcl9zdmMgaW50byBjcHNyCisJLmVuZG0KKworCS5tYWNybyBnZXRfYmFkX3N0YWNrCisJbGRyCXIxMywgX2FybWJvb3RfZW5kCQlAIGdldCBib3R0b20gb2Ygc3RhY2sgKGludG8gc3AgYnkgYnkgdXNlciBzdGFjayBwb2ludGVyKS4KKwlhZGQJcjEzLCByMTMsICNDT05GSUdfU1RBQ0tTSVpFCUAgaGVhZCB0byByZXNlcnZlZCB3b3JkcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaworCXN1YglyMTMsIHIxMywgIzggICAgICAgICAgICAgICAgICAgIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKKworCXN0cglsciwgW3IxM10JCQlAIHNhdmUgY2FsbGVyIGxyIGluIHBvc2l0aW9uIDAgb2Ygc2F2ZWQgc3RhY2sKKwltcnMJbHIsIHNwc3IgICAgICAgICAgICAgICAgICAgICAgICBAIGdldCB0aGUgc3BzcgorCXN0ciAgICAgbHIsIFtyMTMsICM0XSAgICAgICAgICAgICAgICAgICBAIHNhdmUgc3BzciBpbiBwb3NpdGlvbiAxIG9mIHNhdmVkIHN0YWNrCisKKwltb3YJcjEzLCAjTU9ERV9TVkMJCQlAIHByZXBhcmUgU1ZDLU1vZGUKKwlAIG1zcglzcHNyX2MsIHIxMworCW1zcglzcHNyLCByMTMgICAgICAgICAgICAgICAgICAgICAgIEAgc3dpdGNoIG1vZGVzLCBtYWtlIHN1cmUgbW92ZXMgd2lsbCBleGVjdXRlCisJbW92CWxyLCBwYyAgICAgICAgICAgICAgICAgICAgICAgICAgQCBjYXB0dXJlIHJldHVybiBwYworCW1vdnMJcGMsIGxyICAgICAgICAgICAgICAgICAgICAgICAgICBAIGp1bXAgdG8gbmV4dCBpbnN0cnVjdGlvbiAmIHN3aXRjaCBtb2Rlcy4KKwkuZW5kbQorCisJLm1hY3JvIGdldF9pcnFfc3RhY2sJCQlAIHNldHVwIElSUSBzdGFjaworCWxkcglzcCwgSVJRX1NUQUNLX1NUQVJUCisJLmVuZG0KKworCS5tYWNybyBnZXRfZmlxX3N0YWNrCQkJQCBzZXR1cCBGSVEgc3RhY2sKKwlsZHIJc3AsIEZJUV9TVEFDS19TVEFSVAorCS5lbmRtCisKKy8qCisgKiBleGNlcHRpb24gaGFuZGxlcnMKKyAqLworCS5hbGlnbiAgNQordW5kZWZpbmVkX2luc3RydWN0aW9uOgorCWdldF9iYWRfc3RhY2sKKwliYWRfc2F2ZV91c2VyX3JlZ3MKKwlibCAJZG9fdW5kZWZpbmVkX2luc3RydWN0aW9uCisKKwkuYWxpZ24JNQorc29mdHdhcmVfaW50ZXJydXB0OgorCWdldF9iYWRfc3RhY2sKKwliYWRfc2F2ZV91c2VyX3JlZ3MKKwlibCAJZG9fc29mdHdhcmVfaW50ZXJydXB0CisKKwkuYWxpZ24JNQorcHJlZmV0Y2hfYWJvcnQ6CisJZ2V0X2JhZF9zdGFjaworCWJhZF9zYXZlX3VzZXJfcmVncworCWJsIAlkb19wcmVmZXRjaF9hYm9ydAorCisJLmFsaWduCTUKK2RhdGFfYWJvcnQ6CisJZ2V0X2JhZF9zdGFjaworCWJhZF9zYXZlX3VzZXJfcmVncworCWJsIAlkb19kYXRhX2Fib3J0CisKKwkuYWxpZ24JNQorbm90X3VzZWQ6CisJZ2V0X2JhZF9zdGFjaworCWJhZF9zYXZlX3VzZXJfcmVncworCWJsIAlkb19ub3RfdXNlZAorCisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKworCS5hbGlnbgk1CitpcnE6CisJZ2V0X2lycV9zdGFjaworCWlycV9zYXZlX3VzZXJfcmVncworCWJsIAlkb19pcnEKKwlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKKworCS5hbGlnbgk1CitmaXE6CisJZ2V0X2ZpcV9zdGFjaworCS8qIHNvbWVvbmUgb3VnaHQgdG8gd3JpdGUgYSBtb3JlIGVmZmljdGlvbiBmaXFfc2F2ZV91c2VyX3JlZ3MgKi8KKwlpcnFfc2F2ZV91c2VyX3JlZ3MKKwlibCAJZG9fZmlxCisJaXJxX3Jlc3RvcmVfdXNlcl9yZWdzCisKKyNlbHNlCisKKwkuYWxpZ24JNQoraXJxOgorCWdldF9iYWRfc3RhY2sKKwliYWRfc2F2ZV91c2VyX3JlZ3MKKwlibCAJZG9faXJxCisKKwkuYWxpZ24JNQorZmlxOgorCWdldF9iYWRfc3RhY2sKKwliYWRfc2F2ZV91c2VyX3JlZ3MKKwlibCAJZG9fZmlxCisKKyNlbmRpZgorCisJLmFsaWduCTUKKy5nbG9ibCByZXNldF9jcHUKK3Jlc2V0X2NwdToKKwlsZHIJcjEsIHJzdGN0bDEgICAgIC8qIGdldCBjbGttMSByZXNldCBjdGwgKi8KKwltb3YgICAgIHIzLCAjMHgwICAgICAgICAKKwlzdHJoCXIzLCBbcjFdICAgICAgICAvKiBjbGVhciBpdCAqLworCW1vdiAgICAgcjMsICMweDgKKwlzdHJoICAgIHIzLCBbcjFdICAgICAgICAvKiBmb3JjZSBkc3ArYXJtIHJlc2V0ICovCitfbG9vcF9mb3JldmVyOgorCWIJX2xvb3BfZm9yZXZlcgorcnN0Y3RsMToKKwkud29yZAkweGZmZmVjZTEwCg==